home *** CD-ROM | disk | FTP | other *** search
Wrap
(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=Antoine Potten Title=DVDZone2 Description=English version of DVDZone2 Site=http://www.dvdzone2.com Language=EN Version= Requires=3.5.0 Comments= Rewritten by Antoine Potten| Currently it is only possible to get information in english : cookie or session support is needed to change language License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. | GetInfo=1 [Options] ***************************************************) program DVDZone2_FR; var MovieName: string; function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer; var i: Integer; begin result := -1; if StartAt < 0 then StartAt := 0; for i := StartAt to List.Count-1 do if Pos(Pattern, List.GetString(i)) <> 0 then begin result := i; Break; end; end; procedure AnalyzePage(Address: string); var Line, MovieItem, MovieTitle, MovieAddress: string; TitlePos, BeginPos, EndPos: Integer; List: TStringList; begin Line := GetPage(Address); PickTreeClear; if Pos('</b> : 0 item(s) found<br>', Line) = 0 then begin PickTreeAdd('Search results from DVDZone2', ''); BeginPos := Pos('<!-- CENTRAL TABLE -->', Line); EndPos := Pos('<!-- /CENTRAL TABLE -->', Line); Line := Copy(Line, BeginPos, EndPos - BeginPos); List := TStringList.Create; repeat TitlePos := Pos('<a href="http://www.dvdzone2.com/dvd/detail.asp', Line); if TitlePos > 0 then begin Delete(Line, 1, TitlePos); MovieItem := Copy(Line, 1, Pos('add2basket', Line)); BeginPos := Pos('"', MovieItem) + 1; EndPos := Pos('" class', MovieItem); MovieAddress := Copy(MovieItem, BeginPos, EndPos - BeginPos); BeginPos := Pos('">', MovieItem) + 2; EndPos := Pos('</a>', MovieItem); MovieTitle := Copy(MovieItem, BeginPos, EndPos - BeginPos); List.Text := MovieItem; MovieItem := Trim(List.GetString(3)); if MovieItem <> '' then MovieTitle := MovieTitle + ' [' + MovieItem + ']'; MovieItem := Trim(List.GetString(9)); if MovieItem <> '' then MovieTitle := MovieTitle + ' (' + MovieItem + ')'; PickTreeAdd(MovieTitle, MovieAddress); Delete(Line, 1, 25); end; until TitlePos = 0; List.Free; end; if PickTreeExec(Address) then AnalyzeMoviePage(Address); end; procedure AnalyzeMoviePage(Address: string); var Line, Value, FullValue: string; LineNr: Integer; BeginPos, EndPos: Integer; Page: TStringList; begin Line := GetPage(Address); BeginPos := Pos('<!-- CENTRAL TABLE -->', Line); EndPos := Pos('<!-- /CENTRAL TABLE -->', Line); Line := Copy(Line, BeginPos, EndPos - BeginPos); // title BeginPos := Pos('<span class="detail-title">', Line); Delete(Line, 1, BeginPos); BeginPos := Pos('>', Line) + 1; EndPos := Pos('</', Line); Value := Copy(Line, BeginPos, EndPos - BeginPos); HTMLDecode(Value); SetField(fieldOriginalTitle, Value); // picture BeginPos := Pos('http://www.dvdzone2.com/pictures/big/', Line); if BeginPos > 0 then begin Delete(Line, 1, BeginPos - 1); EndPos := Pos('"', Line); Value := Copy(Line, 1, EndPos - 1); GetPicture(Value); end; // description BeginPos := Pos('<p>', Line); Delete(Line, 1, BeginPos + 2); EndPos := Pos(#13, Line); Value := StringReplace(Copy(Line, 1, EndPos - 1), '<p>', #13#10#13#10); HTMLRemoveTags(Value); HTMLDecode(Value); SetField(FieldDescription, Value); // rating BeginPos := Pos('Global rating', Line); if BeginPos > 0 then begin Delete(Line, 1, BeginPos); BeginPos := Pos('<b>', Line); if BeginPos > 0 then begin BeginPos := BeginPos + 3; EndPos := Pos(',', Line); Value := Copy(Line, BeginPos, EndPos - BeginPos); SetField(fieldRating, Value); end; end; Page := TStringList.Create; BeginPos := Pos('<td height="120" width="50%" class="dvd-detail-border-c" valign="top" align="left">', Line); Delete(Line, 1, BeginPos); EndPos := Pos('</table>', Line); Page.Text := Copy(Line, 1, EndPos); // director SetField(fieldDirector, GetInfo('<b>Director', Page)); // actors SetField(fieldActors, StringReplace(GetInfo('<b>Actors', Page), ' - ', ', ')); // country SetField(fieldCountry, GetInfo('<b>Country', Page)); // year SetField(fieldYear, GetInfo('<b>Year', Page)); // studio (producer) SetField(fieldProducer, GetInfo('<b>Studio', Page)); // category SetField(fieldCategory, GetInfo('<b>Genres', Page)); // length Value := GetInfo('<b>Duration', Page); EndPos := Pos('&', Value); SetField(fieldLength, Copy(Value, 1, EndPos - 1)); // special features (comments) BeginPos := Pos('<span class="detail-title">Special features</span>', Line); Delete(Line, 1, BeginPos); EndPos := Pos('</table>', Line); Delete(Line, EndPos, Length(Line)); FullValue := ''; repeat BeginPos := Pos('</tr>', Line); Delete(Line, 1, BeginPos); BeginPos := Pos('<tr>', Line); if BeginPos > 0 then begin BeginPos := Pos('<b>', Line); if BeginPos > 0 then begin Value := Copy(Line, BeginPos + 3, Length(Line)); EndPos := Pos(#10, Value); Value := StringReplace(Copy(Value, 1, EndPos - 1), '<br>', ' '); HTMLRemoveTags(Value); HTMLDecode(Value); FullValue := FullValue + '- ' + Value + #13#10; end; end; until (Pos('<tr>', Line) = 0) or (Pos('<b>', Line) = 0); if FullValue <> '' then SetField(fieldComments, 'DVD Special features:' + #13#10 + FullValue); Page.Free; //DisplayResults; end; function GetInfo(Name: string; Page: TStringList): string; var LineNr, BeginPos, EndPos: Integer; Value, Line: string; begin LineNr := FindLine(Name, Page, 0); if LineNr > 0 then begin Line := Page.GetString(LineNr); BeginPos := Pos(': ', Line) + 7; EndPos := Pos('<br>', Line); Value := Copy(Line, BeginPos, EndPos - BeginPos); HTMLRemoveTags(Value); HTMLDecode(Value); Result := Value; end else Result := ''; end; begin if CheckVersion(3,5,0) then begin MovieName := GetField(fieldOriginalTitle); if MovieName = '' then MovieName := GetField(fieldTranslatedTitle); if Input('DVDZone2 Import', 'Enter the title of the movie:', MovieName) then begin AnalyzePage('http://www.dvdzone2.com/dvd/search.asp?t=1&kw=' + UrlEncode(MovieName) + '&kwt=t&pl=all'); end; end else ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)'); end.